home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS075.dsk
/
CRIBBAGE.int
< prev
next >
Wrap
Text File
|
2012-02-16
|
12KB
|
407 lines
0 TEXT :CALL -936: POKE -16300,0:CALL -380:NO TRACE
5 TAB 11:PRINT "APPLE II ";:CALL -384:PRINT "C<CTRL-G>R<CTRL-G>I<CTRL-G>B<CTRL-G>B<CTRL-G>A<CTRL-G>G<CTRL-G>E<CTRL-G>":CALL -380:FOR I=1 TO 500:NEXT I
6 PRINT :TAB 6:PRINT "BY: A<CTRL-G>LA<CTRL-G>N AND G<CTRL-G>RA<CTRL-G>HA<CTRL-G>M CHAPMAN"
7 PRINT :TAB 4:PRINT "FROM THE OTTAWA 6502 USER GROUP"
8 PRINT :PRINT :PRINT "TO PLAY A CARD (OR GIVE TO BOX),SIMPLY TYPE THE NUMBER OF THAT CARD (STARTING FROM THE LEFT)"
9 VTAB 24
10 FOR I=1 TO 3000:NEXT I
20 POKE 74,0: POKE 75,8: POKE 204,0: POKE 205,8
30 POKE 66,0: POKE 67,12: POKE 62, PEEK (76): POKE 63, PEEK (77):L= PEEK (76):H= PEEK (77)
40 H=H-24: POKE 60,L: POKE 61,H:CALL -468
60 POKE 66,0: POKE 67,64: POKE 60,0: POKE 61,32: POKE 62,0: POKE 63,36:CALL -468
65 DIM NMB$(12),SCR(11)
67 LM= PEEK (74)+256* PEEK (75)
70 TSTSCR=16825:HNDSCR=16851:CRBSCR=16884:ALLSCR=16972:PLYSCR=17148:BASRNK=16967
75 FLTT=17431:PRTT=17432:PRCNT=17433:TOT15=17434:NBTT=17435:RNTT=17436:RNCNT=17437:TOT31=17438:SCRTT=17439:PLYTT=17454
80 NWGM=0
90 CALL -936:VTAB 24
94 PRINT " RUNS :PAIRS :15'S :FLUSH !TOTAL! 31'S :GO : FOR THE JACK! !";
98 PRINT " MY SCORE: YOUR SCORE:"
100 DIM CHND(6),PHND(6)
110 DIM CDSCD(4),PDSCD(4)
120 DIM CRIB(4),PACK(52)
125 DIM CHND1(6):DIM PHND1(6):DIM DSCD(8):DIM DSCD1(8)
128 NMB$=" 0123456789"
130 CMPLOCX=10:CMPLOCY=0:PLYLOCX=10:PLYLOCY=110
140 CRBLOCX=10:CRBLOCY=50:CDSCDLOCX=150:CDSCDLOCY=0:PDSCDLOCX=150
145 PDSCDLOCY=110
150 PACKLOCX=128:PACKLOCY=50
160 CSCR=0:PSCR=0
180 CALL 3072
185 VTAB 21
190 POKE 34,23: POKE 37,23
200 REM SHUFFLE THE CARDS
201 PRINT
202 PRINT "<CTRL-G>SHUFFLING";
205 FOR I=1 TO 52:PACK(I)=I:NEXT I
210 FOR I=1 TO 52:MIX=1+ RND (52):K=PACK(MIX):PACK(MIX)=PACK(I):PACK(I)=K
220 NEXT I
250 IF NWGM=1 THEN 400
300 REM CUT FOR DEAL
305 PRINT
310 PRINT "<CTRL-G>CUTTING FOR DEAL";
320 A= RND (52):B= RND (52)
322 IF (A MOD 13)=(B MOD 13) THEN 320
324 X=CMPLOCX:Y=CMPLOCY
328 CARD=1+A:GOSUB 6000
330 A=RANK+1:IF A=14 THEN A=1
340 X=PLYLOCX:Y=PLYLOCY
344 CARD=1+B:GOSUB 6000
350 B=RANK+1:IF B=14 THEN B=0
360 IF A>B THEN GOTO 380
365 PRINT
370 PRINT "<CTRL-G>MY DEAL AND CRIB";:CMPDL=1
375 GOTO 390
380 PRINT
385 PRINT "<CTRL-G>YOUR DEAL AND CRIB";:CMPDL=0
390 FOR I=1 TO 300:NEXT I
400 REM DEAL THE CARDS
405 NWGM=1:CALL 3072
410 FOR I=1 TO 6:CHND(I)=PACK(I):NEXT I
420 FOR I=1 TO 6:PHND(I)=PACK(6+I):NEXT I
425 IF CMPDL=1 THEN 455
430 FOR I=1 TO 6:X=CMPLOCX+15*(I-1):Y=CMPLOCY:CARD=0:GOSUB 6000
435 X=PLYLOCX+15*(I-1):Y=PLYLOCY:CARD=PHND(I):GOSUB 6000:NEXT I
450 GOTO 465
455 FOR I=1 TO 6:X=PLYLOCX+15*(I-1):Y=PLYLOCY:CARD=PHND(I):GOSUB 6000
460 X=CMPLOCX+15*(I-1):Y=CMPLOCY:CARD=0:GOSUB 6000:NEXT I
465 X=PACKLOCX:Y=PACKLOCY:CARD=0:GOSUB 6000
470 NCC=6:NPC=6:NCP=0
480 FOR I=1 TO 8:DSCD(I)=0
490 FOR I=1 TO 8:DSCD1(I)=0
500 REM DISCARD TO THE BOX
503 PRINT
505 PRINT "<CTRL-G>DISCARD TO THE CRIB,ME FIRST";
510 FOR I=1 TO 6: POKE I,CHND(I):NEXT I:CALL ALLSCR
514 FOR I=1 TO 6:CHND(I)= PEEK (I):NEXT I:CRIB(1)=CHND(5)
516 CRIB(2)=CHND(6)
517 NCC=4
518 FOR I=1 TO 6:X=CMPLOCX+15*(I-1):Y=CMPLOCY:CARD=-1:GOSUB 6000:NEXT I
519 PRINT
520 PRINT "<CTRL-G>HERE'S MY TWO";
522 X=CRBLOCX:Y=CRBLOCY:CARD=0:GOSUB 6000
524 X=CRBLOCX+15:Y=CRBLOCY:CARD=0:GOSUB 6000
525 FOR I=1 TO 4:X=CMPLOCX+15*(I-1):Y=CMPLOCY:CARD=0:GOSUB 6000:NEXT I
530 PRINT
532 IF CMPDL THEN 538
535 PRINT "<CTRL-G>SELECT TWO CARDS FOR YOUR CRIB";
537 GOTO 540
538 PRINT "<CTRL-G>SELECT TWO CARDS FOR MY CRIB";
540 C= PEEK (-16384):IF C<128 THEN GOTO 540
550 C=C-176:IF (C<1) OR (C>6) THEN 540: POKE -16368,0
560 CRIB(3)=PHND(C)
570 D= PEEK (-16384):IF D<128 THEN GOTO 570
575 D=D-176:IF (D<1) OR (D>6) THEN 570: POKE -16368,0
580 IF C#D THEN 585
581 PRINT
583 PRINT "<CTRL-G><CTRL-G>OU ALREADY GAVE THAT ONE!";:GOTO 570
585 CRIB(3)=PHND(C):CRIB(4)=PHND(D)
586 NPC=4
587 J=1:FOR I=1 TO 6:PHND(J)=PHND(I)
588 J=J+(I#C)*(I#D):NEXT I
592 FOR I=1 TO 6:X=PLYLOCX+15*(I-1):Y=PLYLOCY:CARD=-1:GOSUB 6000:NEXT I
594 X=CRBLOCX+30:Y=CRBLOCY:CARD=0:GOSUB 6000
596 X=CRBLOCX+45:Y=CRBLOCY:CARD=0:GOSUB 6000
597 FOR I=1 TO 4:X=PLYLOCX+15*(I-1):Y=PLYLOCY:CARD=PHND(I):GOSUB 6000:NEXT I
600 REM TURN UP A CARD
603 PRINT
605 IF CMPDL THEN 615
607 PRINT "<CTRL-G>HIT A KEY TO CUT THE PACK";
610 IF PEEK (-16384)<128 THEN 610: POKE -16368,0
611 PRINT :GOTO 620
615 PRINT "<CTRL-G>I CUT THE PACK";:FOR I=1 TO 100:NEXT I
620 X=PACKLOCX:Y=PACKLOCY:CARD=PACK(13):TC=CARD:GOSUB 6000
623 PL=NOT CMPDL
625 IF RANK#10 THEN 700
628 PRINT
630 PRINT "SCORE TWO FOR HIS HEELS";
650 HEELS=1:P=NOT CMPDL
660 GOSUB 4000
670 HEELS=0
700 REM PLAY THE GAME**********************************************************
705 NWGM=1:STP=0
710 PFLAG=0:CFLAG=0
720 IF (PL#1) AND (NWGM=1) THEN 2000
1000 REM PLAYERS TURN *****************************************************
1005 IF NPC=0 THEN PFLAG=1+(CFLAG#0)
1010 IF PFLAG#0 THEN GOTO 2000
1015 P=1
1020 GOSUB 8700
1030 IF GO=0 THEN 1400
1035 PRINT
1040 PRINT "<CTRL-G>YOUR TURN";
1050 C= PEEK (-16384):C=C-176
1060 IF (C<1) OR (C>NPC) THEN 1050
1065 POKE -16368,0
1070 NPC=NPC-1
1080 NCP=NCP+1
1085 K=PHND(C):PHND(C)=PHND(NPC+1):PHND(NPC+1)=K
1090 DSCD(NCP)=K
1100 FOR I=1 TO NCP
1110 POKE I,DSCD(I)
1120 NEXT I
1130 POKE 0,NCP
1140 CALL PLYSCR
1150 IF PEEK (PLYTT)<32 THEN 1200
1160 PRINT :PRINT "<CTRL-G><CTRL-G>TOO BIG";
1165 NPC=NPC+1:NCP=NCP-1
1170 K=PHND(C):PHND(C)=PHND(NPC):PHND(NPC)=K
1175 FOR I=1 TO 100:NEXT I
1180 VTAB 24:TAB 1:CALL -868:GOTO 1040
1190 GOTO 1050
1200 FOR I=1 TO NPC+1:X=PLYLOCX+15*(I-1):Y=PLYLOCY:CARD=-1:GOSUB 6000:NEXT I
1210 X=PDSCDLOCX+(3-NPC)*15:Y=PDSCDLOCY:CARD=DSCD(NCP):GOSUB 6000
1215 IF NPC=0 THEN 1230
1220 FOR I=1 TO NPC:X=PLYLOCX+15*(I-1):Y=PLYLOCY:CARD=PHND(I):GOSUB 6000:NEXT I
1230 P=1
1240 GOSUB 4000
1250 IF PEEK (PLYTT)#31 THEN 1260
1254 CFLAG=1:PFLAG=2
1260 GOTO 2000
1400 IF PFLAG>0 THEN 2000
1410 PRINT
1420 PRINT "<CTRL-G>YOU CAN'T GO";
1440 PFLAG=1+(CFLAG#0)
1450 GOTO 2000
2000 REM COMPUTERS TURN******************************************************
2003 NWGM=0
2005 IF CFLAG#0 THEN 2785
2010 IF NCC=0 THEN CFLAG=1+(PFLAG#0)
2510 IF CFLAG#0 THEN 2785
2515 IF NCP=0 THEN 2770
2518 P=0
2520 GOSUB 8700
2530 IF GO=0 THEN 2740
2540 PRINT
2545 PRINT "<CTRL-G>MY TURN";
2550 NCC=NCC-1
2560 NCP=NCP+1
2570 K=CHND(BEST):CHND(BEST)=CHND(NCC+1):CHND(NCC+1)=K
2580 DSCD(NCP)=K
2610 X=CMPLOCX+15*(NCC):Y=CMPLOCY:CARD=-1:GOSUB 6000
2615 IF NCC=0 THEN 2630
2620 X=CMPLOCX+15*(NCC-1):Y=CMPLOCY:CARD=0:GOSUB 6000
2625 IF NCC=0 THEN 2632
2630 X=CDSCDLOCX+(3-NCC)*15:Y=CDSCDLOCY:CARD=DSCD(NCP):GOSUB 6000
2632 FOR I=1 TO NCP
2633 POKE I,DSCD(I)
2634 NEXT I
2635 POKE 0,NCP
2636 CALL PLYSCR
2640 P=0
2650 GOSUB 4000
2652 IF PEEK (PLYTT)#31 THEN 2660
2654 PFLAG=1:CFLAG=2
2660 GOTO 2785
2740 IF CFLAG>0 THEN 2785
2743 PRINT
2745 PRINT "<CTRL-O><CTRL-G>I CAN'T GO";
2750 CFLAG=1+(PFLAG#0)
2760 GOTO 2785
2770 BEST=1+ RND (NCC)
2780 GOTO 2540
2785 IF (PFLAG>0) AND (CFLAG>0) THEN 3000
2790 GOTO 1000
3000 REM PLAY STOPPED IF BOTH CAN'T GO ********************************************************************
3003 IF PEEK (PLYTT)=31 THEN 3010
3005 STP=1:P=PFLAG>CFLAG:GOSUB 4000:STP=0
3010 IF (NCC=0) AND (NPC=0) THEN 3170
3020 FOR I=1 TO (4-NCC)
3030 X=CDSCDLOCX+15*(I-1)
3040 Y=CDSCDLOCY
3050 CARD=0
3060 GOSUB 6000
3070 NEXT I
3080 FOR I=1 TO (4-NPC)
3090 X=PDSCDLOCX+15*(I-1)
3100 Y=PDSCDLOCY
3110 CARD=0
3120 GOSUB 6000
3130 NEXT I
3140 NCP=0
3145 PL=0
3150 IF CFLAG>PFLAG THEN PL=1
3160 GOTO 700
3170 GOSUB 8000
3190 IF END=1 THEN 170
3195 GOTO 700
4000 REM DISPLAY THE SCORE********** ********************************
4050 IF HEELS THEN 4500
4070 IF STP THEN 4600
4100 FOR I=1 TO 9:SCR(I)= PEEK (17430+I):NEXT I
4110 SCR= PEEK (SCRTT)
4120 SCR(10)=0
4130 A=7:B=6:GOSUB 4140
4131 A=16:B=2:GOSUB 4140
4132 A=24:B=4:GOSUB 4140
4133 A=32:B=1:GOSUB 4140
4134 A=135:B=8:GOSUB 4140
4135 A=144:B=10:GOSUB 4140
4136 A=147:B=5:GOSUB 4140
4138 GOSUB 4170
4139 GOTO 4200
4140 BB=(1+SCR(B)/10)+(SCR(B)>9)
4142 A=1615+A
4145 POKE A, ASC(NMB$(BB,BB))
4150 BB=(1+SCR(B) MOD 10)+(SCR(B)>0)
4155 POKE (A+1), ASC(NMB$(BB,BB))
4160 RETURN
4170 A=1778:B=0
4185 BB=(1+SCR(B)/10)+(SCR(B)>9)
4187 POKE (A+1), ASC(NMB$(BB,BB))
4190 BB=(2+SCR(B) MOD 10)
4195 POKE (A+2), ASC(NMB$(BB,BB))
4199 RETURN
4200 REM DISPLAY PLAYERS SCORES
4250 CSCR=CSCR+SCR*(P=0)
4260 PSCR=PSCR+SCR*(P=1)
4320 A=CSCR*(P=0)+PSCR*(P=1)
4325 B=1884*(P=0)+1908*(P=1)
4330 BB=(1+A/100)+(A>99)
4340 POKE B, ASC(NMB$(BB,BB))
4350 BB=(1+(A MOD 100)/10)+(A>9)
4360 POKE B+1, ASC(NMB$(BB,BB))
4370 BB=(2+A MOD 10)
4380 POKE B+2, ASC(NMB$(BB,BB))
4400 IF (PSCR>=121) THEN 4430
4410 IF (CSCR>=121) THEN 4460
4420 RETURN
4430 PRINT
4432 PRINT "YOU WIN!";:FOR I=1 TO 10:CALL -198:VTAB 24:TAB 1:CALL -868:PRINT "HIT ANY KEY TO PLAY AGAIN"
4435 REM LOOK FOR A KEY
4440 GOTO 4480
4460 PRINT
4462 PRINT "I WIN!";:FOR I=1 TO 10:CALL -198:NEXT I:VTAB 24:TAB 1:CALL -868:PRINT "HIT ANY KEY TO PLAY AGAIN";
4465 REM LOOK FOR A KEY
4480 P= PEEK (-16384):IF P<128 THEN 4480: POKE -16368,0
4490 POKE 204,0: POKE 205,8
4492 POP
4495 GOTO 65
4500 CSCR=CSCR+2*CMPDL:PSCR=PSCR+2*(CMPDL=0)
4510 POKE 1762,178
4520 GOTO 4320
4600 CSCR=CSCR+(NOT P):PSCR=PSCR+P
4610 POKE 1760,177
4620 SCR=SCR+1
4630 GOSUB 4170
4690 GOTO 4320
4800 BB=(1+B/100)+(B>99)
4810 POKE A, ASC(NMB$(BB,BB))
4820 BB=(1+(B MOD 100))+(B>9)
4830 POKE (A+1), ASC(NMB$(BB,BB))
4840 BB=(2+B MOD 10)
4850 POKE (A+2), ASC(NMB$(BB,BB))
5000 REM DISPLAY ALL THE CARDS ****************************
5505 CALL 3072
5507 X=PACKLOCX:Y=PACKLOCY:CARD=TC:GOSUB 6000
5510 FOR I=1 TO 4
5600 X=CMPLOCX+15*(I-1)
5610 Y=CMPLOCY
5620 CARD=CHND(I)
5630 GOSUB 6000
5640 X=CRBLOCX+15*(I-1)
5650 Y=CRBLOCY
5660 CARD=CRIB(I)
5670 GOSUB 6000
5680 X=PLYLOCX+15*(I-1)
5690 Y=PLYLOCY
5700 CARD=PHND(I)
5710 GOSUB 6000
5720 NEXT I
5730 RETURN
6000 REM DRAW A CARD ****************************************
6030 IF CARD>=0 THEN 6050
6040 RANK=0:SUIT=1:GOTO 6330
6050 IF CARD#0 THEN 6100
6070 RANK=1:SUIT=0:GOTO 6330
6100 RANK=1+(CARD-1) MOD 13
6150 SUIT=1+(CARD-1)/13
6300 RANK=RANK-1:IF RANK=0 THEN RANK=13
6330 POKE 6635,X
6332 POKE 6636,0
6334 POKE 6637,Y
6336 POKE 6638,RANK
6338 POKE 6639,SUIT
6340 CALL 6650
6360 RETURN
8000 REM SCORE THE HANDS **************************************
8002 PRINT :PRINT "<CTRL-G>"
8003 PRINT "END OF HAND SCORES";
8005 GOSUB 5000
8010 IF CMPDL=1 THEN 8300
8100 FOR I=1 TO 4
8110 POKE I,CHND(I)
8120 NEXT I
8130 POKE 5,TC
8131 PRINT
8132 PRINT "<CTRL-G>HIT A KEY TO SEE MY HAND SCORE";
8133 IF PEEK (-16384)<128 THEN 8133: POKE -16368,0
8134 PRINT
8135 PRINT "MY HAND";
8140 CALL HNDSCR
8150 P=0
8160 GOSUB 4000
8165 FOR I=1 TO 400:NEXT I
8170 IF CMPDL#1 THEN 8300
8171 PRINT
8172 PRINT "<CTRL-G>HIT A KEY TO SEE MY CRIB SCORE";
8173 IF PEEK (-16384)<128 THEN 8173: POKE -16368,0
8174 PRINT
8175 PRINT "MY CRIB";
8180 GOSUB 8500
8190 P=0
8200 GOSUB 4000
8205 FOR I=1 TO 400:NEXT I
8210 GOTO 8600
8300 FOR I=1 TO 4
8310 POKE I,PHND(I)
8320 NEXT I
8330 POKE 5,TC
8331 PRINT
8332 PRINT "<CTRL-G><CTRL-F>HIT A KEY TO SEE YOUR HAND SCORE";
8333 IF PEEK (-16384)<128 THEN 8333: POKE -16368,0
8334 PRINT
8335 PRINT "YOUR HAND";
8340 CALL HNDSCR
8350 P=1
8360 GOSUB 4000
8365 FOR I=1 TO 400:NEXT I
8370 IF CMPDL=1 THEN 8100
8371 PRINT
8372 PRINT "<CTRL-G>HIT A KEY TO SEE YOUR CRIB SCORE";
8373 IF PEEK (-16384)<128 THEN 8373: POKE -16368,0
8374 PRINT
8375 PRINT "YOUR CRIB";
8380 GOSUB 8500
8390 P=1
8400 GOSUB 4000
8405 FOR I=1 TO 400:NEXT I
8410 GOTO 8600
8500 FOR I=1 TO 4
8510 POKE I,CRIB(I)
8520 NEXT I
8530 POKE 5,TC
8540 CALL CRBSCR
8550 RETURN
8600 CALL 3072
8650 NWGM=1:CMPDL=NOT CMPDL:PL=NOT CMPDL:GOTO 200
8700 REM FIND THE BEST CARD TO LAY ****************************************
8705 L=NCC*(P=0)+NPC*(P=1)
8706 FOR I=1 TO L
8710 FOR J=1 TO NCP
8720 POKE J,DSCD(J)
8730 NEXT J
8740 POKE 0,NCP+1
8770 POKE (NCP+1),(CHND(I)*(P=0)+PHND(I)*(P=1))
8780 CALL PLYSCR
8790 CHND1(I)= PEEK (SCRTT)
8800 IF ( PEEK (PLYTT))>31 THEN CHND1(I)=-1
8810 NEXT I
8820 BEST=1
8830 FOR I=1 TO L
8840 IF CHND1(I)>CHND1(BEST) THEN BEST=I
8850 NEXT I
8860 GO=(CHND1(BEST)>-1)
8870 RETURN
Listing error: possible embedded machine code.